/**
 * 
 */
package com.humi.partner.common.feign;

import java.util.List;

import javax.validation.constraints.NotBlank;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.humi.cloud.common.model.Result;
import com.humi.cloud.share.user.model.UpdateUserAndCompanyVo;
import com.humi.cloud.share.user.model.UserBasicInfoVo;

/**
 * <pre>
 * <b>用户中心远程接口.</b>
 * <b>Description:</b> 
 *    
 * <b>Author:</b> zhouguangyong@360humi.com
 * <b>Date:</b> 2019年7月22日 下午1:27:17
 * <b>Copyright:</b> Copyright 2017-2019 www.360humi.com Technology Co., Ltd. All rights reserved.
 * <b>Changelog:</b>
 *   Ver   		Date                    Author               	 Detail
 *   ----------------------------------------------------------------------
 *   1.0   2019年7月22日 下午1:27:17    zhouguangyong@360humi.com     new file.
 * </pre>
 */
@FeignClient(value = "humi-cloud-user", path = "/api")
public interface UserCenterFeign {

	/**
	 * <pre>
	 *	批量获取用户信息
	 * </pre>
	 * @param userIds	需要获取信息的用户ID
	 * @return
	 */
	@PostMapping("/findUserByIds")
	Result findUserByIds(@RequestBody String[] userIds);
	
	/**
	 * <pre>
	 *	获取用户上级信息
	 * </pre>
	 * @param userId
	 * @return
	 */
	@GetMapping("/user/parents")
	List<UserBasicInfoVo> findParentUsers(@RequestParam(required = true, value = "userId") String userId);
	

	/**
	 * <pre>
	 *	根据用户ID获取用户基础信息
	 * </pre>
	 * @param userId
	 * @return
	 */
	@RequestMapping(value = "/getById", method = RequestMethod.GET)
	Result getById(@RequestParam(value = "userId", required = true) String userId);
	
	/**
	 * <pre>
	 *	根据用户ID获取用户基础信息,其中包括用户的公司、银行卡、等信息。
	 * </pre>
	 * @param userId
	 * @return
	 */
	@PostMapping(value = "/{userId}/detail.html")
	Result getDetailById(@PathVariable(value = "userId", required = true) @NotBlank(message = "用户ID不能为空")String userId);
	
	/**
	 * <pre>
	 *	修改用户基础信息和公司信息
	 *	修改非null的字段
	 * </pre>
	 * @param request
	 * @return
	 */
	@PostMapping("/update.html")
	Result updateBasicAndCompnay(@RequestBody UpdateUserAndCompanyVo request);
	
}
